High Efficiency Video Coding (HEVC) is a new coding standard that has been developed in recent years. In the High Efficiency Video Coding (HEVC) system, the fixed-size macroblock of H.264/AVC is replaced by a flexible block, named coding unit (CU). Pixels in the CU share the same coding parameters to improve coding efficiency. A CU may begin with a largest CU (LCU), which is also referred as coded tree unit (CTU) in HEVC. In addition to the concept of coding unit, the concept of prediction unit (PU) is also introduced in HEVC. Once the splitting of CU hierarchical tree is done, each leaf CU is further split into one or more prediction units (PUs) according to prediction type and PU partition.
Along with the High Efficiency Video Coding (HEVC) standard development, the development of extensions of HEVC has also started. The HEVC extensions include screen content coding (SCC). Due to specific characteristics of screen contents, coding tools have been developed and demonstrated significant gains in coding efficiency. Among them, the colour index coding (a.k.a. major colour based coding) techniques represent block of pixels using indices from a palette (i.e., major colours), and encode the palette and the indices by exploiting spatial redundancy. While the total number of possible colour combinations is huge, the number of colours in an area of picture is usually very limited for typical screen contents. The basic idea behind the palette mode is that the samples in the CU can be represented by a small set of representative colour values. This set of representative colour values is referred to as the palette for the block. It is also possible to indicate a sample that is outside the palette by signalling an escape symbol followed by component values, which may be quantized. Each sample in the block can be assigned to a nearest index in the palette. FIG. 1 illustrates an example of palette coding, where pixels in a current block 110 are represented by palette indices from a palette 120. As shown in FIG. 1, the first three pixels on the top row are mapped to palette indices “2”, “0” and “3” corresponding to the respective palette indices. The pixel “X” filled with crossed-lines indicates a pixel that cannot find a corresponding colour in the palette. This pixel is coded using an escape symbol along with the pixel value. Since each pixel can be represented by one palette index from a small-size palette, therefore, the colour index coding becomes very effective for screen content materials.
The palette indices for a block (i.e., the index map) are coded using two main run modes: ‘INDEX’ and ‘COPY_ABOVE’. The escape symbol is signalled as an ‘INDEX’ mode. It is assigned an index equal to the maximum palette size. The mode is signalled using a flag except for the top row or when the previous mode is COPY_ABOVE. In the COPY_ABOVE mode, the current index and N1 following palette indices are copied from corresponding indices in the above row, where N1 is an integer. Since the pixels of the above row have been coded, there is no need to signal any index value for the COPY_ABOVE mode. In INDEX mode, N2 following indices have the same index value as the index at the current position, where N2 is an integer. The palette index is explicitly signalled for INDEX mode. For both INDEX and COPY_ABOVE modes, a run value is signalled to specify the number of subsequent samples that are also coded using the same mode. When the escape symbol is part of the run in INDEX or COPY_ABOVE mode, the escape component values are signalled for each escape symbol.
FIG. 2 illustrates an example of palette coding process. The samples of a current block 210 consists only three different pixel values as indicated by blank background and two different fill patterns. The sample values are mapped into three palette indices 225 using palette 220. Palette index “2” corresponds to an escape symbol. An index map 230 is generated based on the palette and palette coding is applied to the index map. As mentioned above, the term ‘index map’ refers to the indices of pixels in a block. When the second row is coded, the three consecutive indices 240 with the index value equal to “1” can be coded in INDEX mode with run length equal to 3. The third row can be coded after the second row and the five consecutive indices 250 can be coded using COPY_ABOVE mode with run length equal to 5.
In the literature, INDEX mode is also referred as the copy index mode. The COPY_ABOVE mode is also referred as the copy above mode.
The COPY_ABOVE mode in palette coding only refers to the palette indices of the samples in the row above. There may be non-local duplicated contents in a screen picture as shown in FIG. 3 that may be useful for palette coding. In FIG. 3, for a screen content picture 310, there exists a non-local duplicated content in area 330 for the screen content in area 320. Nevertheless, the COPY_ABOVE mode according to existing palette coding cannot deal with non-local duplicated indexes. It is desirable to develop techniques to explore palette coding using non-local duplicated contents.